/**
 * 权限校验：
 *  Vue Router中的 前置钩子函数 beforeEach(to, from, next)
 * 当进行路由跳转之前，进行判断 是否已经登录 过，登录过则允许访问非登录页面，否则 回到登录页
 * 
 * to:  即将要进入的目标路由对象
 * from: 即将要离开的路由对象
 * next: 是一个方法，可以指定路由地址，进行路由跳转
 */

import router from './router'
import { getUserInfo } from './api/login'

router.beforeEach((to, from, next) => {


    // 1 如果访问的是login 路由  放行

    // 2 判断 是否有token

    // 3 没有 提到login路由

    // 4 有token, 有user  放行

    // 5 有token, 没有user  调用getUserInfo 获取用户信息,获取到以后保存起来在放行
    if (to.path == '/login') {
        next();
    } else {

        const token = localStorage.getItem('wanshi-mms-token')
        if (token) {
            
            const userInfo = localStorage.getItem('wanshi-mms-user')

            if (userInfo) {
                // 本地获取到，则直接让它去目标路由
                next()
            } else {

                getUserInfo(token).then(response => {
                    localStorage.setItem('wanshi-mms-user', JSON.stringify(response))
                    next()
                })
            }
        } else {
            next({ path: '/login' })
        }



    }

})